﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using KTFrameworkCus;
using System.Text;

public partial class Controls_UCLogin : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindWidget();
        }
    }


    protected void BindWidget()
    {
        //MultiView1.SetActiveView(vDangNhap);
        if (Globals.CurrentUserName == "")
        {
            MultiView1.SetActiveView(vDangNhap);
        }
        else
        {
            MultiView1.SetActiveView(vDaDangNhap);
            spUsername.InnerText = Globals.CurrentUserName;
            try
            {
                using (KTFrameworkCusEntities dc = new KTFrameworkCusEntities())
                {
                    udv_Users _user = dc.udv_Users.Where(t => t.UserName == Globals.CurrentUserName).FirstOrDefault();
                    if (_user.Avatar == null || _user.Avatar == "")
                    {
                        hinhdaigiet.Src = Page.ResolveUrl("~/images/no-avatar.png");
                    }
                    else
                    {
                        hinhdaigiet.Src = _user.Avatar;
                    }
                }
            }
            catch (Exception)
            {

            }

        }
    }
    protected void bindThongTin(string username)
    {
        using (KTFrameworkCusEntities dc = new KTFrameworkCusEntities())
        {
            udv_Users _user = dc.udv_Users.Where(t => t.UserName == username).FirstOrDefault();
            if (_user != null)
            {
                txthosotendangnhap.Text = _user.UserName;
                txthosohoten.Text = _user.FirstName;
                txthosoemail.Text = _user.Email;
                txthosodienthoai.Text = _user.Phone;
                txthosodiachi.Text = _user.Address;
                txthosohinhdaidien.Text = _user.Avatar;
                if (_user.Avatar == null || _user.Avatar == "")
                {
                    hinhdaigiet.Src = Page.ResolveUrl("~/images/no-avatar.png");
                }
                else
                {
                    hinhdaigiet.Src = _user.Avatar;
                }
            }
        }
    }
    protected void btnDangNhap_Click(object sender, EventArgs e)
    {

        if (Membership.ValidateUser(txttendangnhap.Text, txtmatkhau.Text))
        {
            Session["username"] = txttendangnhap.Text.Trim();
            FormsAuthentication.SetAuthCookie(txttendangnhap.Text, false);
            spUsername.InnerText = txttendangnhap.Text;
            bindThongTin(txttendangnhap.Text);
            MultiView1.SetActiveView(vDaDangNhap);
            
        }
        else
        {
            lblMsg.Text = "Tên đăng nhập hoặc mật khẩu không hợp lệ.";
        }
    }

    protected void lbHosocanhan_Click(object sender, EventArgs e)
    {
        bindThongTin(Globals.CurrentUserName);
        MultiView1.SetActiveView(vHoSo);
    }
    protected void lbThoat_Click(object sender, EventArgs e)
    {
        FormsAuthentication.SignOut();
        Session["username"] = "";
        MultiView1.SetActiveView(vDangNhap);
    }
    protected void btnDangKy_Click(object sender, EventArgs e)
    {
        MultiView1.SetActiveView(vDangKy);
    }
    protected void lbQuenmatKhau_Click(object sender, EventArgs e)
    {
        MultiView1.SetActiveView(vQuenMatKhau);
    }
    protected void btnDangKyTaiKhoan_Click(object sender, EventArgs e)
    {
        string user = txtdktentaikhoan.Text;
        string pswd = txtdkmatkhau.Text;
        string email = txtdkemail.Text;

        MembershipCreateStatus status;
        MembershipUser userObj = Membership.CreateUser(user, pswd, email, "no", "no", true, out status);
        if (userObj != null)
        {
            SaveProfile(user);
        }
        else
        {
            switch (status)
            {
                case MembershipCreateStatus.DuplicateEmail:
                    lbdkmess.Text = "Email đã được sử dụng";
                    break;
                case MembershipCreateStatus.DuplicateUserName:
                    lbdkmess.Text = "Tên tài khoản đã được sử dụng";
                    break;
                case MembershipCreateStatus.ProviderError:
                    lbdkmess.Text = "Có lỗi xảy ra!";
                    break;
                case MembershipCreateStatus.InvalidPassword:
                    lbdkmess.Text = "Mật khẩu phải có ít nhất 1 ký tự In hoa, 1 ký tự đặc biệt và 1 ký tự số";
                    break;
                default:
                    lbdkmess.Text = status.ToString() + ".";
                    break;
            }

            //Session["myAdminMessage"] = errmes == "" ? null : errmes;
        }
    }

    public void SaveProfile(string UserName)
    {
        using (KTFrameworkCusEntities dc = new KTFrameworkCusEntities())
        {

            string[] currRoles = Roles.GetRolesForUser(UserName);
            if (currRoles.Length > 0)
                Roles.RemoveUserFromRoles(UserName, currRoles);


            List<string> newRoles = new List<string>();
            newRoles.Add("User");
            if (newRoles.Count > 0)
                Roles.AddUserToRoles(UserName, newRoles.ToArray());

            udv_Users obj = new udv_Users();
            aspnet_Users _curuser = dc.aspnet_Users.Where(t => t.UserName == UserName).FirstOrDefault();
            obj.aspnet_Users = _curuser;
            obj.UserName = UserName;
            obj.FirstName = txtdkhoten.Text;
            obj.LastName = "";
            obj.Email = txtdkemail.Text;
            obj.Phone = txtdkdienthoai.Text;
            obj.AddedBy = "";
            obj.AddedDate = DateTime.Now;
            obj.IsActive = true;
            obj.Address = txtdkdiachi.Text;
            obj.Avatar = txthinhdaidien.Text;
            StringBuilder sb = new StringBuilder();
            sb.Append("<p>");
            sb.Append("<strong>Ch&uacute;c mừng bạn đ&atilde; đăng k&yacute; th&agrave;nh c&ocirc;ng t&agrave;i khoản tại Website THƯƠNG XÁ TAX, dưới đ&acirc;y l&agrave; th&ocirc;ng tin t&agrave;i khoản của bạn:</strong></p>");
            sb.Append("<p>");
            sb.Append("<span style='color:#ff0000;'>T&ecirc;n t&agrave;i khoản:</span> <strong>" + txtdktentaikhoan.Text + "</strong></p>");
            sb.Append("<p>");
            sb.Append("<span style='color:#ff0000;'>Mật khẩu:</span> <strong>" + txtdkmatkhau.Text + "</strong></p>");
            sb.Append("<p>");
            sb.Append("<span style='color:#ff0000;'>Họ v&agrave; t&ecirc;n:</span> <strong>" + txtdkhoten.Text + "</strong></p>");
            sb.Append("<p>");
            sb.Append("<span style='color:#ff0000;'>Điện thoại:</span> <strong>" + txtdkdienthoai.Text + "</strong></p>");
            sb.Append("<p>");
            sb.Append("<span style='color:#ff0000;'>Địa chỉ:</span> <strong>" + txtdkdiachi.Text + "</strong></p>");
            sb.Append("<p>");
            sb.Append("<span style='color:#3366ff;'><strong>Nếu bạn c&oacute; bất kỳ thắc mắc hay &yacute; kiến th&igrave; bạn vui l&ograve;ng [<a href='" + (HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + Globals.ApplicationPath + "lien-he.html") + "'>Bấm v&agrave;o đ&acirc;y</a>] để Li&ecirc;n hệ với ch&uacute;ng t&ocirc;i. C&aacute;m ơn!</strong></span></p>");
            sb.Append("<p>");
            sb.Append("<span style='font-size:14px;'><span style='color:#ff0000;'><strong>Lưu &Yacute;: Đ&acirc;y l&agrave; Email tự động, vui l&ograve;ng kh&ocirc;ng trả lời lại Email n&agrave;y.</strong></span></span></p>");

            using (dmsFunction dmsf = new dmsFunction())
            {

                if (dmsf.SendMailBySmtp(sb.ToString(), txtdkemail.Text, "Thông tin tài khoản tại Website THƯƠNG XÁ TAX", "thuongxatax@thuonxatax.vn", "THƯƠNG XÁ TAX"))
                {
                    dc.AddToudv_Users(obj);
                    dc.SaveChanges();
                    MultiView1.SetActiveView(vDangKyThanhCong);
                }
                else
                {
                    lbdkmess.Text = "Có lỗi trong khi tạo tài khoản, vui lòng [<a href='" + (HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + Globals.ApplicationPath + "lien-he.html") + "'>Bấm vào đây</a>] để thông báo cho chúng tôi!";
                }
            }


        }

    }

    protected void btnquaylaidangnhaptudangky_Click(object sender, EventArgs e)
    {
        MultiView1.SetActiveView(vDangNhap);
    }
    protected void btnquenmatkhai_Click(object sender, EventArgs e)
    {
        lbmessquenmatkhai.Text = "";

        using (KTFrameworkCusEntities dc = new KTFrameworkCusEntities())
        {
            using (dmsFunction dmsf = new dmsFunction())
            {
                udv_Users _mu = dc.udv_Users.Where(t => t.Email == txtqmkemail.Text).FirstOrDefault();
                if (_mu == null)
                {
                    lbmessquenmatkhai.Text = "Email này không tồn tại!";
                    return;
                }
                string oldpass = Membership.GetUser(_mu.UserName).ResetPassword();
                string newpass = dmsf.CreateRandomPassword(10).ToLower();
                Membership.GetUser(_mu.UserName).ChangePassword(oldpass, newpass);
                StringBuilder sb = new StringBuilder();
                sb.Append("<p>");
                sb.Append("<strong>Dưới đ&acirc;y l&agrave; th&ocirc;ng tin mật khẩu mới của bạn tại Website THƯƠNG XÁ TAX:</strong></p>");
                sb.Append("<p>");
                sb.Append("<span style='color:#0000ff;'>T&ecirc;n đăng nhập:</span> <span style='color:#ff0000;'><strong>" + _mu.UserName + "</strong></span></p>");
                sb.Append("<p>");
                sb.Append("<span style='color:#0000ff;'>Mật khẩu mới:</span> <span style='color:#ff0000;'><strong>" + newpass + "</strong></span></p>");
                sb.Append("<p>");
                sb.Append("<strong>Vui l&ograve;ng đăng nhập v&agrave;o Website v&agrave; tiến h&agrave;nh thay đổi mật khẩu.</strong></p>");
                sb.Append("<p>");
                sb.Append("<span style='color:#3366ff;'><strong>Nếu bạn c&oacute; bất kỳ thắc mắc hay &yacute; kiến th&igrave; bạn vui l&ograve;ng [<a href='" + (HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + Globals.ApplicationPath + "contact.aspx") + "'>Bấm v&agrave;o đ&acirc;y</a>] để Li&ecirc;n hệ với ch&uacute;ng t&ocirc;i. C&aacute;m ơn!</strong></span></p>");
                sb.Append("<p>");
                sb.Append("<span style='font-size:14px;'><span style='color:#ff0000;'><strong>Lưu &Yacute;: Đ&acirc;y l&agrave; Email tự động, vui l&ograve;ng kh&ocirc;ng trả lời lại Email n&agrave;y.</strong></span></span></p>");

                if (dmsf.SendMailBySmtp(sb.ToString(), _mu.Email, "Mật khẩu mới tại Website THƯƠNG XÁ TAX", "thuongxatax@thuongxatax.vn", "THƯƠNG XÁ TAX"))
                {
                    lbmessquenmatkhai.Text = "Mật khẩu mới đã được gửi về mail của bạn, vui lòng kiểm tra mail để lấy mật khẩu mới!";
                }
                else
                {
                    lbdkmess.Text = "Có lỗi trong khi lấy lại mật khẩu, vui lòng [<a href='" + (HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + Globals.ApplicationPath + "lien-he.html") + "'>Bấm vào đây</a>] để thông báo cho chúng tôi!";
                }
            }
        }


    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        using (KTFrameworkCusEntities dc = new KTFrameworkCusEntities())
        {
            if (!string.IsNullOrEmpty(Globals.CurrentUserName))
            {
                string username = Globals.CurrentUserName;
                udv_Users _user = dc.udv_Users.Where(t => t.UserName == username).FirstOrDefault();
                if (_user != null)
                {
                    _user.FirstName = txthosohoten.Text;
                    _user.Address = txthosodiachi.Text;
                    _user.Phone = txthosodienthoai.Text;
                    _user.Avatar = txthosohinhdaidien.Text;
                    dc.SaveChanges();
                    if (txthosohinhdaidien.Text == "")
                    {
                        hinhdaigiet.Src = Page.ResolveUrl("~/images/no-avatar.png");
                    }
                    else
                    {
                        hinhdaigiet.Src = _user.Avatar;
                    }

                    if (txthosomatkhau.Text.Trim().Length > 2)
                    {
                        string oldpass = Membership.GetUser(_user.UserName).ResetPassword();
                        string newpass = txthosomatkhau.Text;
                        Membership.GetUser(_user.UserName).ChangePassword(oldpass, newpass);
                    }
                    Label1.Text = "Bạn đã cập nhập hồ sơ thành công!";
                }
            }
        }
    }
    protected void Button4_Click(object sender, EventArgs e)
    {
        MultiView1.SetActiveView(vDaDangNhap);
    }
}